package com.huizhonglm.diap.core.image;

import android.graphics.Bitmap;
import android.view.View;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import com.bruce.common.utils.EmptyUtil;
import com.huizhonglm.diap.R;
import com.huizhonglm.diap.api.API;

/**
 * 大图加载器
 *
 * @author LiXiaoLong
 * @version 1.0
 * @since 2014-11-04 13:53
 */
public class PreviewLoader {

    private static PreviewLoader mInstance;

    public static PreviewLoader getInstance() {
        if (mInstance == null) {
            synchronized (PreviewLoader.class) {
                if (mInstance == null) {
                    mInstance = new PreviewLoader();
                }
            }
        }
        return mInstance;
    }

    private PreviewLoader() {
    }


//    public void display(ImageView iv, String url) {
//        if (!EmptyUtil.isEmpty(url)) {
//            ImageLoader.getInstance().displayImage(getFullUrl(url), iv, getOption());
//        } else {
//            iv.setImageResource(R.drawable.def_prev);
//        }
//    }

    public void displaySync(String url, final OnLoadImageListener l) {
        if (!EmptyUtil.isEmpty(url)) {
            ImageLoader.getInstance().loadImage(getFullURL(url), getOption(), new SimpleImageLoadingListener() {
                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    if (l != null) {
                        if (loadedImage != null) {
                            l.onSuccess(loadedImage);
                        } else {
                            l.onFailure();
                        }
                    }
                }

                @Override
                public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                    if (l != null) {
                        l.onFailure();
                    }
                }
            });
        } else {
            if (l != null) {
                l.onFailure();
            }
        }
    }

    private String getFullURL(String url){
        if (!url.startsWith("http://") &&
                !url.startsWith("HTTP://") &&
                !url.startsWith("file://") &&
                !url.startsWith("FILE://") &&
                !url.startsWith("content://") &&
                !url.startsWith("CONTENT://")) {

            return API.HOST + "/" + url;
        }
        return url;
    }

    private DisplayImageOptions getOption() {
        return new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.def_logo)//设置图片在下载期间显示的图片
                .showImageForEmptyUri(R.drawable.def_logo)//设置图片Uri为空或是错误的时候显示的图片
                .showImageOnFail(R.drawable.def_logo)//设置图片加载/解码过程中错误时候显示的图片
                .cacheInMemory(true)//设置下载的图片是否缓存在内存中
                .cacheOnDisk(true)//设置下载的图片是否缓存在SD卡中
                .considerExifParams(true)//是否考虑JPEG图像EXIF参数（旋转，翻转）
                .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
                .displayer(new SimpleBitmapDisplayer())
                .build();
    }
}
